package _test2;

/**

各主要季节间日出、日落时间大体换算方法 
根据农历二、八月昼夜平（这仅是粗略的说法。实际上不同纬度,昼夜时间不完全均等）这一基本时间,可将我们这一带主要季节之间日出、日落的大体时间用各时期的换算公式予以粗略测定。现以中国科学院南京紫金山天文台计算的济南地区的日出、日落时间为基础予以说明。济南地区在“春分”时日出6:15，日落18:24，在此粗略各取6点钟。 
　　１、“春分”──“夏至”期间日出、日落时间的大体测定 
　　y=6±n·1 '20 "（式中6为六点钟，n为这一期间的某一“日序”，y为某一日序时当日的日落、日出时间。日落时间为“＋”，日出时间为“－”。0≤n≤92）。 
        例：①当n=0，即代表3月21日“春分”这一天。式中y=6±0，表示这一天为太阳六点钟出，下午六点钟落下。 
        ②当n=（最大值）92时，即到“夏至”这一天时，y=6±92×1 '20 "为6±122 '即6±2:02 '≈（8:02 '，3:58 '），即“夏至”日时，日出为早上4点钟，日落为晚上8点钟。 
        ③试问4月14日几点钟日出、日落？根据上述公式n=24（24为“春分”后3月份内有10天加上4月份1～14日的14天两数之和），代入公式后，y=6±24×1 '20 "＝6±32 '，即4月14日这一天日出为5点28 '，日落为下午6点32 '。同理，可求得这一期间任意一天的日出、日落的时间。 
        ２、“夏至”──“秋分”期间日出、日落时间的大体(实际情况是“夏至”时，济南4:53日出，19:34 '日落)测定 
        y1=3:58 '+n·1 '20 "，y2=8:02 '-n·1 '20 "（0≤n≤94）当n=0时，即夏至日时，y1=3:58 '(日出)，y2=8:02 '(日落)，n=(最大值)94时，y1=3:58 '+2:05 '≈6，y2=8:02 '-2:05≈6，即至秋分时，日出、日落均在早、晚6点钟。同理，可求得这一期间任意一天的日出、日落时间。 
        ３、“秋分”──“冬至”期间日出、日落时间的大体（实际情况是秋分时，济南5:59 '日出，18:11 '日落）测定 
        y=6±n·1 '20 "（0≤n≤90）当n=0时y=6±0，即9月23日这天日出、日落均为早、晚六点钟。当n=90时（即至“冬至”这天），y＝6±90×1 '20 "，亦即y＝6±120 '＝8～4，也就是说“冬至”这天早上8点出太阳，下午4点日落。同理，可求得这期间任意一天的日出、日落时间。 
        ４、“冬至”──（翌年）“春分”期间日出、日落时间的大体（实际上冬至时，济南7:21日出，17:00日落）测定 
        y1=8-n·1 '20 "，y2=4+n·1 '20 "（0≤n≤89）式中n=0时，y1=8，y2=4，分别为“冬至”日时的日出、日落时间。当n=89即“春分”这一天，y1=8-1:58 '≈6,y2=4+1.58 '≈6，即至“春分”时日出、日落又再次各为早、晚六点钟。同理，可求得这一期间任意一天的日出、日落时间。
 *
 */
public class SunRiseSetTime {
    public static void main(String[] args) {
        double a = 35.6;
        double sina = Math.sin(a / 180 * Math.PI);
        System.out.println("sina:" + sina);

        double e = Math.sin(23.5 / 180 * Math.PI);
        System.out.println("e:" + e);
        double f = -a * (a - 90) / (45 * 45);
        System.out.println("f:" + f);
        System.out.println("e*f:" + e * f);
        System.out.println("1-a/90:" + (1 - a / 90));
        double r = (a / 90) * (a / 90) * (a / 90);
        System.out.println("(a/90)^3:" + r);

        double c;
        c = 1 - sina * r;
        System.out.println("c:" + c);
        double arcsinc = Math.asin(c) * 180 / Math.PI;
        System.out.println("arcsin(c):" + arcsinc);
        c = arcsinc;

        double t = (90 - c) / 15;
        System.out.println("t:" + t);
        System.out.println("则在夏至日，日出时间为=" + (6 - t) + "，日落时间为" + (18 + t));
        System.out.println("则在冬至日，日出时间为=" + (6 + t) + "，日落时间为" + (18 - t));
        System.out.println("2*t*60/180:" + 2 * t * 60 / 180);
        System.out.println("(t-1)*60:" + (t - 1) * 60);
    }
}
